package shm.capaDatos.entidades;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import shm.capaDatos.vo.DatosAuditoriaVO;
import shm.capaDatos.vo.TipoStakeholderVO;
import shm.capaDatos.vo.UsuarioVO;


@Entity
public class TipoStakeholder implements Serializable{
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;
	@Column(length=60,nullable = false, unique = false)
	private String nombre;
	@Column(length=255,nullable = true, unique = false)
	private String descripcion;
	@Embedded
	private DatosAuditoria datosAuditoria;
	private static final long serialVersionUID = 1L;
	
	public TipoStakeholderVO getVO(){
		DatosAuditoriaVO datosAuditoriaVO = null;
		if(this.datosAuditoria != null){
			datosAuditoriaVO = this.datosAuditoria.getVO();
		}
		TipoStakeholderVO tipoStakeholderVO = new TipoStakeholderVO(this.id, this.nombre,this.descripcion, datosAuditoriaVO);
		return tipoStakeholderVO;
	}
	public void setVO(TipoStakeholderVO tipoStakeholderVO){
		if(tipoStakeholderVO != null){
			this.id = tipoStakeholderVO.getId();
			this.nombre = tipoStakeholderVO.getNombre();
			this.descripcion = tipoStakeholderVO.getDescripcion();
		}

	}
	public void actualizacion(UsuarioVO usuarioActualizacion, Date fechaActualizacion){
		if(this.datosAuditoria == null){
			this.datosAuditoria = new DatosAuditoria();
		}
		this.datosAuditoria.actualizacion(usuarioActualizacion, fechaActualizacion);
	}
	public void creacion(UsuarioVO usuarioCreacion, Date fechaCreacion){
		this.actualizacion(usuarioCreacion, fechaCreacion);
		this.datosAuditoria.creacion(usuarioCreacion, fechaCreacion);
	}
	public void eliminacion(UsuarioVO usuarioEliminacion, Date fechaEliminacion){
		this.actualizacion(usuarioEliminacion, fechaEliminacion);
		this.datosAuditoria.eliminacion(usuarioEliminacion, fechaEliminacion);
	}
	public DatosAuditoria getDatosAuditoria() {
		return datosAuditoria;
	}
	
	public void setDatosAuditoria(DatosAuditoria datosAuditoria) {
		this.datosAuditoria = datosAuditoria;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}

	
}
